//package com.wst.system.config.sharding.config;
//
//import com.wst.system.util.SnowFlakeUtil;
//import io.shardingsphere.api.algorithm.sharding.ListShardingValue;
//import io.shardingsphere.api.algorithm.sharding.ShardingValue;
//import io.shardingsphere.api.algorithm.sharding.complex.ComplexKeysShardingAlgorithm;
//import lombok.extern.slf4j.Slf4j;
//
//import java.text.SimpleDateFormat;
//import java.util.*;
//
///**
// * @Classname CustomComplexKeysShardingAlgorithm
// * @Description TODO
// * @Date 2023/2/23 17:56
// * @Created by XiongXiong
// * @Author: X.I.O
// *
// * 复合分片
// */
//@Slf4j
//public class CustomComplexKeysShardingAlgorithm implements ComplexKeysShardingAlgorithm{
//
//    @Override
//    public Collection<String> doSharding(Collection<String> availableTargetNames, Collection<ShardingValue> shardingValues) {
//        Collection<String> routTables = new HashSet<>();
//        Collection id=getColumnValue(shardingValues,"id");
//        Collection shardTime=getColumnValue(shardingValues, "shardtime");
//        if(id!=null){
//            Object[] objects=id.toArray();
//            if(objects.length>0){
//                Object val=objects[0];
//                SimpleDateFormat dft=new SimpleDateFormat("yyyyMM");
//                //获取主键id
//                Date date= SnowFlakeUtil.getTimeBySnowFlakeId(Long.parseLong(String.valueOf(val)));
//                routTables.add("log_"+dft.format(date));
//                log.info("走的是id路由");
//                return routTables;
//            }
//        }
//        if(shardTime != null){
//            Object[] objects=shardTime.toArray();
//            if (objects.length > 0) {
//                Object val=objects[0];
//                routTables.add("log_"+val);
//                log.info("走的是时间分片路由");
//                return routTables;
//            }
//        }
//        return routTables;
//    }
//
//
//    private Collection getColumnValue(Collection<ShardingValue> shardingValues,String key){
//        if(shardingValues == null){
//            return null;
//        }
//        for (ShardingValue shardingValue : shardingValues) {
//            if(shardingValue instanceof ListShardingValue){
//                ListShardingValue listShardingValue=(ListShardingValue) shardingValue;
//                if(listShardingValue.getColumnName().equals(key)){
//                    return listShardingValue.getValues();
//                }
//            }
//        }
//        return null;
//    }
//
//
//}
